﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace test1
{
    public class SearchType
    {
        public string typeOf { get; set; }

        public string strategy { get; set; }
        public string label { get; set; }

        public static List<SearchType> searchTypes = new List<SearchType>
        {
            new SearchType{ typeOf="Text", strategy="Exact", label="contains the word" },
            new SearchType{ typeOf="Text", strategy="Embedded", label="contains" },
            new SearchType{ typeOf="Text", strategy="Simple", label="contains the word" },
            new SearchType{ typeOf="Text", strategy="Terms", label="is matching exact expression" },
            new SearchType{ typeOf="Text", strategy="Fuzzy", label="contains word that resembles" },
            new SearchType{ typeOf="Text", strategy="Phonetic", label="contains word that sounds like" },
            new SearchType{ typeOf="Text", strategy="Stemming", label="contains word with the same radical as" },


            new SearchType{ typeOf="Classification", strategy="all_of", label="all of" },
            new SearchType{ typeOf="Classification", strategy="any_of", label="any of" },
            new SearchType{ typeOf="Classification", strategy="none_of", label="none of" },

            new SearchType{ typeOf="Date", strategy="Min", label="After" },
            new SearchType{ typeOf="Date", strategy="Max", label="Before" },
            new SearchType{ typeOf="Date", strategy="Day", label="Precise day" },
            new SearchType{ typeOf="Date", strategy="Range", label="Range" },

        };
    }

    public class SearchItem
    {
        public string Name { get; set; }
        public string Lable { get; set; }
        public string TypeOf { get; set; }
        public string[] Ops { get; set; }

        public string tags { get; set; }

        public static List<SearchItem> searchItems = new List<SearchItem>
        {
            new SearchItem { TypeOf = "Text", Name = "brandName", Lable = "Brand name", Ops = new string[] { "Simple", "Terms", "Fuzzy", "Phonetic", "Stemming" } },
            new SearchItem { TypeOf = "Text", Name = "goodsServices", Lable = "Goods and services", Ops = new string[] { "Exact", "Fuzzy", "Terms" } },
            new SearchItem { TypeOf = "Text", Name = "applicant", Lable = "Owner", Ops = new string[] { "Simple", "Fuzzy", "Embedded" } },
            new SearchItem { TypeOf = "Text", Name = "representative", Lable = "Representative ", Ops = new string[] { "Simple", "Fuzzy", "Embedded" } },

            new SearchItem { TypeOf = "Properties", Name = "markFeature", Lable = "Feature ", tags = "3D:Three dimensional;Colour;Combined;Figurative;Hologram;Motion;Multimedia;Olfactory;Other;Pattern;Position;Sound;Stylized characters;Tracer;Undefined;Word" },
            new SearchItem { TypeOf = "Properties", Name = "status", Lable = "Status ", tags = "Ended,Expired,Pending,Registered,Unknown" },
            new SearchItem { TypeOf = "Properties", Name = "type", Lable = "Type ", tags = "AO:Appellation of Origin;EMBLEM:Emblem;GI:Geographical Indication;INN;TRADEMARK:Trademark" },

            //new SearchItem { TypeOf = "Classification", Name = "niceClass", Lable = "Nice classification", Ops=new string[]{ "all_of","any_of","none_of"} },
            //new SearchItem { TypeOf = "Classification", Name = "usDesignClass", Lable = "US designs classification",  Ops=new string[]{ "all_of","any_of","none_of"}},
            //new SearchItem { TypeOf = "Classification", Name = "viennaClass", Lable = "Vienna classification",  Ops=new string[]{ "all_of","any_of","none_of"}},

            new SearchItem { TypeOf = "Date", Name = "appDate", Lable = "Application ", Ops = new string[]{"Min","Max","Day","Range" } },
            new SearchItem { TypeOf = "Date", Name = "expDate", Lable = "Expiry", Ops = new string[]{"Min","Max","Day","Range" } },
            new SearchItem { TypeOf = "Date", Name = "regDate", Lable = "Registration", Ops = new string[]{"Min","Max","Day","Range" } },
            new SearchItem { TypeOf = "Date", Name = "termDate", Lable = "Termination", Ops = new string[]{"Min","Max","Day","Range" } },

            new SearchItem { TypeOf = "Number", Name = "appNum", Lable = "Application" },
            new SearchItem { TypeOf = "Number", Name = "prioNum", Lable = "Priority" },
            new SearchItem { TypeOf = "Number", Name = "regNum", Lable = "Registration" },

            new SearchItem { TypeOf = "Country", Name = "designation", Lable = "Designation country" ,Ops=new string[]{ "all_of","any_of","none_of"}},
            new SearchItem { TypeOf = "Country", Name = "office", Lable = "IP office" ,Ops=new string[]{ "all_of","any_of","none_of"}},
            new SearchItem { TypeOf = "Country", Name = "refOffice", Lable = "Office of origin" ,Ops=new string[]{ "all_of","any_of","none_of"}},
            new SearchItem { TypeOf = "Country", Name = "applicant_cc", Lable = "Owner country code" ,Ops=new string[]{ "all_of","any_of","none_of"}},
        };
    }


}